<?php

namespace WebExpres\ContentBundle\Controller;

// Aquestes son les classes que afegire per defecte
use WebExpres\HotelBundle\Controller\HotelController;
use Symfony\Component\HttpFoundation\Request;

// Aqui posare funcions d'ajuda que tindra el Bundle
use WebExpres\ContentBundle\ContentBundle;

// Aqui vaig instacia de la classe que gestiona la BBDD
use WebExpres\ContentBundle\Entity\Seccion;
use WebExpres\ContentBundle\Entity\SeccionMeta;
use WebExpres\ContentBundle\Entity\SeccionTradus;
use WebExpres\ContentBundle\Entity\SeccionRelation;

class SeccionController extends HotelController
{
    
    public function principalAction($idhotel)
    {
    
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultahayHoteles();
        $session = $this->getRequest()->getSession();

        // Netejo la sessio de variables
        $this->CleanSession();
                
        switch ($Configuracio) {
            case 1:

                // Hotel
                
                // Aqui miro si ha hotels
                if (count($HotelsPublicats) == 0) {
                    
                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));
                    
                } else {
                    
                    // Hi ha hotels
                    
                    foreach($HotelsPublicats as $hotelPubli) {
                        
                        $hotel = $hotelPubli;
                        
                    }

                    return $this->render('ContentBundle:Hotel:principal.html.twig', array("configuracio" => $Configuracio, "hotelspublicats" => $HotelsPublicats, "hotel" => $hotel));
                    
                }
                
            break;
            case 2:
                
                // Cadena
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {
                    
                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));
                    
                } else {
                
                    // Hi ha hotels
                    
                    if ($idhotel!= 0){
                    
                        // $hotels = $this->consultaHotelsPublicats($idhotel);
                        $hotels = $this->consultaGetHoteles($idhotel);
                        
                        // Comprovo que sigui un idhotel real
                        if (count($hotels) != 0) {

                            // Real    
                            $hotel = $hotels;
                            return $this->render('ContentBundle:Cadena:principal.html.twig', array("configuracio" => $Configuracio, "hotelspublicats" => $HotelsPublicats, "hotel" => $hotel));

                        } else {

                            // No real
                            $this->get('session')->setFlash("error", "¿Quieres hacerme la pirula?");
                            return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                        }
                        
                    } else {
                        
                        // No real
                        $this->get('session')->setFlash("error", "Si no tengo una id, no puedo saber que hotel quieres gestionar");
                        return $this->redirect($this->generateUrl('HotelBundle_homepage'));
                        
                    }
                
                }

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        }
        
    }
    
    public function llistaajaxAction(Request $request) {
        
        if($request->isXmlHttpRequest()){
            
            $aMoures = $request->request->get('dadesArray');
           
            echo "<pre>";
            print_r($aMoures);
            echo "</pre>";
            
            foreach ($aMoures as $aMoure) {

                // $aMoure[0] --> Id que estic movent
                // $aMoure[1] --> Id pare
                // $aMoure[2] --> estic sota
                
                if ( ($aMoure[0] != "0") && ($aMoure[0] != "") ) {
                    
                    if ($aMoure[2] != "") {

                        $em = $this->getDoctrine()->getEntityManager();
                        $Posicio = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdseccion($aMoure[2]);
                        $resultatPosition = $Posicio->getPosition() + 1;

                    } else {

                        $resultatPosition = 0; 

                    }

                    $resultatPare = $aMoure[1];

                    $em = $this->getDoctrine()->getEntityManager();
                    $Update = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdseccion($aMoure[0]);
                    $Update->setIdsecfill($resultatPare);
                    $Update->setPosition($resultatPosition);

                    $accio = $Update;

                    $em = $this->getDoctrine()->getEntityManager();
                    $em->persist($accio);
                    $em->flush();
                    
                }
               
            }
            
            die();
            
        }
        
    }
    
    public function llistaAction($idhotel, $ididioma) {
                
        // Aixo es per comprovar si m'han passat un id idioma valid
        $ComLanguage = $this->consultaLanguages($ididioma);
        
        // Hi si no es valid, per defecte carrego Español
        if (count($ComLanguage) == 0) {
            
            $ididioma = 1;
            
        }
        
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        
        // Netejo la variable sessio
        $this->CleanSession();
        
        switch ($Configuracio) {
            case 1:
                
                // Hotel

                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {

                    // Hi ha hotels

                    foreach($HotelsPublicats as $hotelPubli) {

                        $hotel = $hotelPubli;

                    }

                    $abreSeccio = $this->montaArbre($hotel->getId(), $ididioma, 1);
                    
                    $languages = $this->consultaLanguages(0);
                
                    if (count($languages) == 1) {
                   
                        $languages = "";
                    
                    }

                    return $this->render('ContentBundle:Hotel:llistaseccions.html.twig', array("configuracio" => $Configuracio, "hotelspublicats" => $HotelsPublicats, 'hotel' => $hotel, 'arbre' => $abreSeccio, 'languages' => $languages, 'idioma' => $ididioma ));

                }                

            break;
            case 2:

                // Cadena
                
                echo "Encara ho tinc que fer";
                die();

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        }
        
    }
    
    public function publicaseccioAction($idhotel, $idseccion, $ididioma) {

        
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        // Netejo la variable sessio
        $this->CleanSession();      

        switch ($Configuracio) {
            case 1:

                // Hotel

                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {

                    // Hi ha hotels
                    
                    // Aixo es per comprovar si m'han passat un id idioma valid
                    $ComLanguage = $this->consultaLanguages($ididioma);
        
                    // Hi si no es valid, per defecte carrego Español
                    if (count($ComLanguage) != 0) {

                        // Comprovo si la $idseccion es diferent a 0, per que si es diferent a 0 vol dir que li passem un id
                        if ($idseccion != 0) {

                            
                            // Passem un $idseccion, ara es te que mirar si aquesta id es bona
                            $resultados = $this->getSeccionsTradusCorretgit($idseccion, $ididioma);
                            
                            // Aqui comprovo que sigui idsession bona
                            if (is_object($resultados)) {

                                // idsession es bona
                                
                                // Aqui comprovare que no sigui una seccio principal
                                $em = $this->getDoctrine()->getEntityManager();
                                $SeccionPrincipal = $em->getRepository('ContentBundle:Seccion')->find($idseccion);
                                
                                if ($SeccionPrincipal->getPrincipal() != 1) {

                                    if ($resultados->getPublished() == 1) {

                                        $message = "La Seccion ha sido despublicada correctamente.";
                                        $resultados->setPublished(0);

                                    } else {

                                        $message = "La Seccion ha sido publicada correctamente.";
                                        $resultados->setPublished(1);

                                    }

                                    $resultados->setUpdatedAt(new \DateTime('now'));

                                    $em = $this->getDoctrine()->getEntityManager();
                                    $em->persist($resultados);
                                    $em->flush();

                                    $this->get('session')->setFlash("success", $message);

                                    return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                
                                } else {
                                
                                    $this->get('session')->setFlash("error", "Seccion principal no se puede despublicar.");
                                    return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                    
                                }

                            } else {

                                // idsession es dolenta

                                $this->get('session')->setFlash("error", "Esta intentando modificar un Seccion que no existe.");
                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                            }


                        } else {

                            // No li estem passant cap $idseccion

                            $this->get('session')->setFlash("error", "No ha escogido ninguna Seccion.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                        }
                        
                    } else {
                        
                        // El Idioma passat no es el correcte
                        
                        $this->get('session')->setFlash("error", "El idioma que recibo, no es el correcto.");
                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list')); 
                        
                    }

                }                

            break;
            case 2:

                // Cadena
                
                echo "Encara ho tinc que fer";
                die();

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        } 
        
    }
    
    public function visibleseccioAction($idhotel, $idseccion, $ididioma) {

        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        // Netejo la variable sessio
        $this->CleanSession();      

        switch ($Configuracio) {
            case 1:

                // Hotel

                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {

                    // Hi ha hotels
                    
                    // Aixo es per comprovar si m'han passat un id idioma valid
                    $ComLanguage = $this->consultaLanguages($ididioma);
        
                    // Hi si no es valid, per defecte carrego Español
                    if (count($ComLanguage) != 0) {

                        // Comprovo si la $idseccion es diferent a 0, per que si es diferent a 0 vol dir que li passem un id
                        if ($idseccion != 0) {

                            // Passem un $idseccion, ara es te que mirar si aquesta id es bona

                            $resultados = $this->getSeccionsTradusCorretgit($idseccion, $ididioma);
                            
                            // Aqui comprovo que sigui idsession bona
                            if (is_object($resultados)) {

                                // idsession es bona

                                if ($resultados->getVisible() == 1) {

                                    $message = "La Seccion ahora no es visible";
                                    $resultados->setVisible(0);

                                } else {

                                    $message = "La Seccion ahora es visible.";
                                    $resultados->setVisible(1);

                                }

                                $resultados->setUpdatedAt(new \DateTime('now'));

                                $em = $this->getDoctrine()->getEntityManager();
                                $em->persist($resultados);
                                $em->flush();

                                $this->get('session')->setFlash("success", $message);

                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                            } else {

                                // idsession es dolenta

                                $this->get('session')->setFlash("error", "Esta intentando modificar un Seccion que no existe.");
                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                            }


                        } else {

                            // No li estem passant cap $idseccion

                            $this->get('session')->setFlash("error", "No ha escogido ninguna Seccion.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                        }
                        
                    } else {
                        
                        // El Idioma passat no es el correcte
                        
                        $this->get('session')->setFlash("error", "El idioma que recibo, no es el correcto.");
                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list')); 
                        
                    }

                }                

            break;
            case 2:

                // Cadena
                
                echo "Encara ho tinc que fer";
                die();

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        } 
        
    }    
    
    public function taskAction($idhotel, $ididioma) {
        
        ///// Aqui tinc que revisar si rebo la variable $idhotel
    
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        
        // Recullo tot el Request
        $request = $this->getRequest();
        $session = $this->getRequest()->getSession();
        
        // Guardo el valor del objecte nom "DadesGuarda" el $botoFormulari
        $botoFormulari = $request->request->get('DadesGuarda');

        if (isset($botoFormulari)) {
            
            // Existeix el valor
            
            $ReculloIdhotel = $session->get('idhotel');

            // Aqui guardare";
            
            $idhotel = $ReculloIdhotel;
            $Nombre = $request->request->get('nombre');
            $Seccion = $request->request->get('seccion');
            $Descripcio = $request->request->get('desc');
            $Publicado = $request->request->get('publicado');
            $Visible = $request->request->get('visible');
            
            $TitleTag = $request->request->get('titletag');
            $KeywordsTag = $request->request->get('Keywordstag');
            $DescTag = $request->request->get('desctag');
            $UrlfriendlyTag = $request->request->get('urlfriendlytag');
            
            // Valido els Camps
            if ($Nombre != "" && $Descripcio != "" && $Publicado != "" && $TitleTag != "" && $UrlfriendlyTag != ""){
                
                // Es correcte
                
                // Aqui guardo la seccio
                $insertSeccion = New Seccion();
                $insertSeccion->setIdhotel($idhotel);
                $insertSeccion->setIdtipo(0);
                $insertSeccion->setPrincipal(0);
                $insertSeccion->setCreatedAt(new \DateTime('now'));
                $insertSeccion->setUpdatedAt(new \DateTime('now'));
                $accioSeccio = $insertSeccion;
                
                $ec = $this->getDoctrine()->getEntityManager();
                $ec->persist($accioSeccio);
                $ec->flush();

                // Aqui guardo els textes
                $insertSeccionTradus = New SeccionTradus();
                $insertSeccionTradus->setIdseccion($accioSeccio->getId());
                $insertSeccionTradus->setNomseccion($Nombre);
                $insertSeccionTradus->setDescripcio($Descripcio);
                $insertSeccionTradus->setIdidioma($ididioma);
                $insertSeccionTradus->setPublished($Publicado);
                $insertSeccionTradus->setVisible($Visible);
                $insertSeccionTradus->setCreatedAt(new \DateTime('now'));
                $insertSeccionTradus->setUpdatedAt(new \DateTime('now'));
                $accioSeccioTradus = $insertSeccionTradus;

                $ec = $this->getDoctrine()->getEntityManager();
                $ec->persist($accioSeccioTradus);
                $ec->flush();
                
                // Aqui guardo els Metas
                $insertSeccionMetas = New SeccionMeta();
                $insertSeccionMetas->setIdseccion($accioSeccio->getId());
                $insertSeccionMetas->setIdidioma($ididioma);
                $insertSeccionMetas->setTitle($TitleTag);
                $insertSeccionMetas->setKeywords($KeywordsTag);
                $insertSeccionMetas->setDescription($DescTag);
                $insertSeccionMetas->setUrlfriendly($UrlfriendlyTag);
                $insertSeccionMetas->setCreatedAt(new \DateTime('now'));
                $insertSeccionMetas->setUpdatedAt(new \DateTime('now'));
                $accioSeccioMetas = $insertSeccionMetas;
                
                $ec = $this->getDoctrine()->getEntityManager();
                $ec->persist($accioSeccioMetas);
                $ec->flush();
                
                // Aqui tinc que mirar quina es la pose maxima
                
                $em = $this->getDoctrine()->getEntityManager();
                $Positions = $em->getRepository('ContentBundle:SeccionRelation')->findSeccionsMaxPosition($Seccion, $idhotel);

                if (count($Positions) != 0) {
                    
                    $valorPosition = 0;
                    
                    foreach($Positions as $Position) {
                       
                        if ($valorPosition < $Position->getPosition()) { 
                           
                            $valorPosition =  $Position->getPosition();
                            
                        }
                        
                    }
                    
                    $valorPosition = $valorPosition + 1;
                    
                } else {
                    
                    $valorPosition = 0;
                    
                }
                
                // Fi aqui miro la posicio maxima
                
                // Aqui guardo la relacio
                $insertSeccionRelation = New SeccionRelation();
                $insertSeccionRelation->setIdseccion($accioSeccio->getId());
                $insertSeccionRelation->setIdsecfill($Seccion);
                $insertSeccionRelation->setIdhotel($idhotel);
                $insertSeccionRelation->setPosition($valorPosition);
                $accioSeccioRelation = $insertSeccionRelation;
                
                $ec = $this->getDoctrine()->getEntityManager();
                $ec->persist($accioSeccioRelation);
                $ec->flush();
                
                $this->get('session')->setFlash("success", "Alta feta correctament");
                return $this->redirect($this->generateUrl('ContentBundle_secciones_add'));
                
            } else {
               
                // No es correcte
                $this->get('session')->setFlash("error", "Los campos con asterisco, son obligatorios.");
                return $this->redirect($this->generateUrl('ContentBundle_secciones_add')); 
                
            }
            
        } else {
        
            // No existeix
            
            switch ($Configuracio) {
                case 1:

                    // Hotel

                    // Aqui miro si ha hotels
                    if (count($HotelsPublicats) == 0) {

                        // No hi ha hotels
                        $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                        return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                    } else {

                        // Hi ha hotels

                        foreach($HotelsPublicats as $hotelPubli) {

                            $hotel = $hotelPubli;

                        }
                        
                        $abreSeccio = $this->montaArbre($hotel->getId(),$ididioma, 0);
                        
                        $session->set('idhotel', $hotel->getId());
                        
                        $modi = 0;

                        return $this->render('ContentBundle:Hotel:formsessiones.html.twig', array("configuracio" => $Configuracio, 'hotel' => $hotel, 'arbre' => $abreSeccio, 'modi' => $modi ));

                    }                

                break;
                case 2:

                    // Cadena
                    
                    echo "Encara ho tinc que fer";
                    die();

                break;
                default:

                    // No hi ha configuracio inicial                
                    return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

                break;

            }
        
        }
        
    }
    
    public function editseccioAction($idseccion, $idhotel, $ididioma) {
        
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        // Netejo la variable sessio
        $this->CleanSession();
        
        // Defineixo la sessio
        $session = $this->getRequest()->getSession();
        
        switch ($Configuracio) {
            case 1:
            
                // Hotel
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {
                    
                    // Hi ha hotels
                    
                    // Aixo es per comprovar si m'han passat un id idioma valid
                    $ComLanguage = $this->consultaLanguages($ididioma);
                    
                    // Hi si no es valid, per defecte carrego Español
                    if (count($ComLanguage) != 0) {
                        
                        // Es un idioma valid
                        
                        // Comprovo si la $idseccion es diferent a 0, per que si es diferent a 0 vol dir que li passem un id
                        if ($idseccion != 0) {
                            
                            // Estem passant un $idseccion, pero ara tenim que comprovar que sigui correcte
                            
                            $resultadosTradus = $this->getSeccionsTradus($idseccion, $ididioma);
                            $resultadosMetas = $this->getSeccionsMetas($idseccion, $ididioma);
                            
                            if (is_object($resultadosTradus)) {
                                
                                // $idseccion es bona
                                
                                foreach($HotelsPublicats as $hotelPubli) {

                                    $hotel = $hotelPubli;

                                }
                                
                                $idhotel = $hotel->getId();
                                
                                $abreSeccio = $this->montaArbre($hotel->getId(),$ididioma, 0);
                                
                                $em = $this->getDoctrine()->getEntityManager();
                                $Relacio = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdseccion($idseccion);
                            
                                $CategoriaRelacionada = $Relacio->getIdsecfill();
                                
                                $modi = 1;
                                
                                // Defineixo les sessions basiques
                                $session->set('idhotel', $idhotel);
                                $session->set('idseccion', $idseccion);
                                $session->set('idtradus', $resultadosTradus->getId());
                                $session->set('idmetas', $resultadosMetas->getId());
                                $session->set('idrelacio', $Relacio->getId());
                                $session->set('ididioma', $ididioma);

                                return $this->render('ContentBundle:Hotel:formsessiones.html.twig', array("configuracio" => $Configuracio, 'hotel' => $hotel, 'arbre' => $abreSeccio, 'modi' => $modi, 'secciotradu' => $resultadosTradus, 'secciometas' => $resultadosMetas, 'caterela' => $CategoriaRelacionada, 'ididioma' => $ididioma ));
                                
                                
                            } else {
                                
                                // $idseccion es dolenta

                                $this->get('session')->setFlash("error", "Esta intentando modificar un Seccion que no existe.");
                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));                                
                                
                            }
                            
                        } else {
                            
                            // No li estem passant cap $idseccion

                            $this->get('session')->setFlash("error", "No ha escogido ninguna Seccion.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));                            
                            
                        }
                        
                    } else {
                        
                        // No es un idioma valid
                        $this->get('session')->setFlash("error", "El idioma que recibo, no es el correcto.");
                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list'));
                        
                    }
                    
                    
                }
                
            break;
            case 2:

                // Cadena
                
                echo "Encara ho tinc que fer";
                die();

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        }
        
    }
    
    public function traduseccioAction($idseccion, $idhotel, $ididioma) {
        
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        switch ($Configuracio) {
            case 1:
                
                // Hotel
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {
                    
                    // Aixo es per comprovar si m'han passat un id idioma valid
                    $ComLanguage = $this->consultaLanguages($ididioma);
                    
                    // Hi si no es valid, per defecte carrego Español
                    if (count($ComLanguage) != 0) {
                        
                        // Es un idioma valid
                        
                        // Comprovo si la $idseccion es diferent a 0, per que si es diferent a 0 vol dir que li passem un id
                        if ($idseccion != 0) {
                            
                            $em = $this->getDoctrine()->getEntityManager();
                            $ResultatSeccio = $em->getRepository('ContentBundle:Seccion')->find($idseccion);
                            
                            // Comprovo si es un contingut real
                            if (is_object($ResultatSeccio)) {
                            
                                // Existeix
                                
                                $ResultatIdioma = $this->getSeccionsTradus($idseccion, $ididioma);
                                
                                if (!is_object($ResultatIdioma)) {
                                
                                    // No existeix la traduccio
                                    
                                    foreach($HotelsPublicats as $hotelPubli) {

                                        $hotel = $hotelPubli;

                                    }
                        
                                    $abreSeccio = $this->montaArbre($hotel->getId(),$ididioma, 0);
                        
                                    $session->set('idhotel', $hotel->getId());
                                    $session->set('idseccion', $idseccion);
                                    $session->set('ididioma', $ididioma);
                        
                                    $modi = 2;    

                                    return $this->render('ContentBundle:Hotel:formsessiones.html.twig', array("configuracio" => $Configuracio, "hotelspublicats" => $HotelsPublicats, 'hotel' => $hotel, 'arbre' => $abreSeccio, 'modi' => $modi, 'ididioma' => $ididioma ));
                                    
                                } else {
                                    
                                    // Existeix la traduccio
                                    
                                    $this->get('session')->setFlash("error", "La seccion ya tiene una traduccion.");
                                    return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                    
                                }
                                
                            } else {
                                
                                // No existeix
                                
                                $this->CleanSession();
                                
                                $this->get('session')->setFlash("error", "La seccion no existe.");
                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                
                            }
                            
                        } else {
                            
                            // No li estem passant cap $idseccion

                            $this->get('session')->setFlash("error", "No ha escogido ninguna Seccion.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                            
                        }
                        
                    } else {
                        
                        // No es un idioma valid
                        $this->get('session')->setFlash("error", "El idioma que recibo, no es el correcto.");
                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list'));
                        
                        
                    }
                
                }
                
            break;
            case 2:
                
                // Cadena
                
                echo "Encara ho tinc que fer";
                die();                
                
            break;
            default:
                
                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));
                
            break;
        }
        
    }
    
    public function editsecciosaveAction() {
       
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        switch ($Configuracio) {
            case 1:
                
                // Hotel
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {
        
                    // Hi ha hotels
                    
                    // Recullo tot el Request
                    $request = $this->getRequest();
                    
                    // Guardo el valor del objecte nom "DadesGuarda" el $botoFormulari
                    $botoFormulari = $request->request->get('DadesGuardaModi');

                    // Aqui controlo si han fet click el boto de guardar
                    if (isset($botoFormulari)) {
                        
                        // A fet click
                        
                        $Nombre = $request->request->get('nombre');
                        $Seccion = $request->request->get('seccion');
                        $Descripcio = $request->request->get('desc');
                        $Publicado = $request->request->get('publicado');
                        $Visible = $request->request->get('visible');
            
                        $TitleTag = $request->request->get('titletag');
                        $KeywordsTag = $request->request->get('Keywordstag');
                        $DescTag = $request->request->get('desctag');
                        $UrlfriendlyTag = $request->request->get('urlfriendlytag');
                        
                        if ($Nombre != "" && $Descripcio != "" && $TitleTag != "" && $UrlfriendlyTag != "" ) {
                        
                            $idtradusSession = $session->get("idtradus");
                            $idmetasSession = $session->get("idmetas");
                            $idrelacioSession = $session->get("idrelacio");
                            $ididiomaSession = $session->get("ididioma");
                            $idhotelSession = $session->get("idhotel");
                            
                            // Update de les traduccions
                            $em = $this->getDoctrine()->getEntityManager();
                            $updateTradus = $em->getRepository('ContentBundle:SeccionTradus')->find($idtradusSession);
                            //$updateTradus = $this->getSeccionsTradus($idseccionSession, $ididiomaSession);
                            $updateTradus->setNomseccion($Nombre);
                            $updateTradus->setDescripcio($Descripcio);
                            $updateTradus->setPublished($Publicado);
                            $updateTradus->setVisible($Visible);
                            $updateTradus->setUpdatedAt(new \DateTime('now'));
                            
                            $accioTradu = $updateTradus;
                            
                            $em = $this->getDoctrine()->getEntityManager();
                            $em->persist($accioTradu);
                            $em->flush();
                            
                            // Update Metas
                            $em = $this->getDoctrine()->getEntityManager();
                            $updateMetas = $em->getRepository('ContentBundle:SeccionMeta')->find($idmetasSession);
                            //$updateMetas = $this->getSeccionsMetas($idseccionSession, $ididiomaSession);
                            $updateMetas->setTitle($TitleTag);
                            $updateMetas->setKeywords($KeywordsTag);
                            $updateMetas->setDescription($DescTag);
                            $updateMetas->setUrlfriendly($UrlfriendlyTag);
                            $updateMetas->setUpdatedAt(new \DateTime('now'));
                            
                            $accioMetas = $updateMetas;
                            
                            $em = $this->getDoctrine()->getEntityManager();
                            $em->persist($accioMetas);
                            $em->flush();
                            
                            // Aqui tinc que mirar quina es la pose maxima
                
                            $em = $this->getDoctrine()->getEntityManager();
                            $Positions = $em->getRepository('ContentBundle:SeccionRelation')->findSeccionsMaxPosition($Seccion, $idhotelSession);

                            if (count($Positions) != 0) {

                                $valorPosition = 0;

                                foreach($Positions as $Position) {

                                    if ($valorPosition < $Position->getPosition()) { 

                                        $valorPosition =  $Position->getPosition();

                                    }

                                }

                                $valorPosition = $valorPosition + 1;

                            } else {

                                $valorPosition = 0;

                            }

                            // Fi aqui miro la posicio maxima
                            
                            // Update Relacio
                            $em = $this->getDoctrine()->getEntityManager();
                            $updateRelacio = $em->getRepository('ContentBundle:SeccionRelation')->find($idrelacioSession);
                            
                            if ($updateRelacio->getIdsecfill() != $Seccion) {
                            
                                // Si es diferen a la que te entrada faig el update i coloco posicio
                                
                                $updateRelacio->setIdsecfill($Seccion);
                                $updateRelacio->setPosition($valorPosition);
                            
                                $accioRelacio = $updateRelacio;
                            
                                $em = $this->getDoctrine()->getEntityManager();
                                $em->persist($accioRelacio);
                                $em->flush();
                            
                            }
                            
                            // Netejo la variable sessio
                            $this->CleanSession();
                    
                            $this->get('session')->setFlash("success", "Seccion modificada correctamente.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididiomaSession)));
        
                        } else {
                        
                            $ididiomaSessio = $session->get("ididioma");
                            $idseccionSessio = $session->get("idseccion");
                            
                            // Netejo la variable sessio
                            $this->CleanSession();
                            
                            $this->get('session')->setFlash("error", "Los campos con asterisco, son obligatorios.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_edit', array('ididioma' => $ididiomaSessio, 'idseccion' => $idseccionSessio)));
                            
                        }
                        
                    } else {
                        
                        // No ha fet click
                        
                        $this->get('session')->setFlash("error", "No se que quieres hacer.");
                        return $this->redirect($this->generateUrl('ContentBundle_homepage'));
                        
                    }
                    
                }
                
            break;
            case 2:
                
                // Cadena
                
                echo "Encara ho tinc que fer";
                die();                
                
            break;
            default:
                
                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));
                
            break;
        }
        
    }
    
    public function tradusecciosaveAction() {
        
        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        switch ($Configuracio) {
            case 1:
                
                // Hotel
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {
                    
                    // Hi ha hotels
                    
                    // Recullo tot el Request
                    $request = $this->getRequest();
                    
                    // Guardo el valor del objecte nom "DadesGuardaCrea" el $botoFormulari
                    $botoFormulari = $request->request->get('DadesGuardaCrea');
                    
                    // Aqui controlo si han fet click el boto de guardar
                    if (isset($botoFormulari)) {
                        
                        // A fet click
                        
                        $Nombre = $request->request->get('nombre');
                        $Seccion = $request->request->get('seccion');
                        $Descripcio = $request->request->get('desc');
                        $Visible = $request->request->get('visible');
                        $Publicado = $request->request->get('publicado');
            
                        $TitleTag = $request->request->get('titletag');
                        $KeywordsTag = $request->request->get('Keywordstag');
                        $DescTag = $request->request->get('desctag');
                        $UrlfriendlyTag = $request->request->get('urlfriendlytag');
                        
                        if ($Nombre != "" && $Descripcio != "" && $TitleTag != "" && $UrlfriendlyTag != "" ) {
                            
                            // Estan les dades be
                            
                            $idseccionSession = $session->get("idseccion");
                            $ididiomaSession = $session->get("ididioma");
                            
                            // Insert Tradus
                            $insertTradus = new SeccionTradus();
                            $insertTradus->setIdseccion($idseccionSession);
                            $insertTradus->setNomseccion($Nombre);
                            $insertTradus->setDescripcio($Descripcio);
                            $insertTradus->setIdidioma($ididiomaSession);
                            $insertTradus->setVisible($Visible);
                            $insertTradus->setPublished($Publicado);
                            $insertTradus->setCreatedAt(new \DateTime('now'));
                            $insertTradus->setUpdatedAt(new \DateTime('now'));

                            $accioTradu = $insertTradus;

                            $em = $this->getDoctrine()->getEntityManager();
                            $em->persist($accioTradu);
                            $em->flush();

                            // Insert metas
                            $insertMetas = new SeccionMeta();
                            $insertMetas->setIdseccion($idseccionSession);
                            $insertMetas->setIdidioma($ididiomaSession);
                            $insertMetas->setTitle($TitleTag);
                            $insertMetas->setKeywords($KeywordsTag);
                            $insertMetas->setDescription($DescTag);
                            $insertMetas->setUrlfriendly($UrlfriendlyTag);
                            $insertMetas->setCreatedAt(new \DateTime('now'));
                            $insertMetas->setUpdatedAt(new \DateTime('now'));

                            $accioMetas = $insertMetas;

                            $em = $this->getDoctrine()->getEntityManager();
                            $em->persist($accioMetas);
                            $em->flush();
                            
                            $this->CleanSession();
                            
                            $this->get('session')->setFlash("success", "Traduccion creada correctamente");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididiomaSession)));
                            
                        } else {
                        
                            $ididiomaSessio = $session->get("ididioma");
                            $idseccionSessio = $session->get("idseccion");
                            
                            // Netejo la variable sessio
                            $this->CleanSession();
                            
                            $this->get('session')->setFlash("error", "Los campos con asterisco, son obligatorios.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_tradu', array('ididioma' => $ididiomaSessio, 'idseccion' => $idseccionSessio)));
                            
                        }
                        
                    } else {
                        
                        // No ha fet click
                        
                        $this->get('session')->setFlash("error", "No se que quieres hacer.");
                        return $this->redirect($this->generateUrl('ContentBundle_homepage'));
                        
                    }
                    
                }
                               
                
            break;
            case 2:
                
                // Cadena
                
                echo "Encara ho tinc que fer";
                die();                
                
            break;
            default:
                
                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));
                
            break;
        }

    }

    public function borraseccioAction($idseccion, $idhotel, $ididioma) {

        $Configuracio = $this->controlOpcio();
        $HotelsPublicats = $this->consultaHotelsPublicats(0);
        $session = $this->getRequest()->getSession();
        
        // Netejo la variable sessio
        $this->CleanSession();
        
        switch ($Configuracio) {
            case 1:
            
                // Hotel
                
                // Aqui miro si hi ha hotels
                if (count($HotelsPublicats) == 0) {

                    // No hi ha hotels
                    $this->get('session')->setFlash("info", "Antes de definir el contenido, tienes que crear un Hotel.");
                    return $this->redirect($this->generateUrl('HotelBundle_homepage'));

                } else {                
                    
                    // Hi ha hotels
                    
                    // Aixo es per comprovar si m'han passat un id idioma valid
                    $ComLanguage = $this->consultaLanguages($ididioma);
                    
                    // Hi si no es valid, per defecte carrego Español
                    if (count($ComLanguage) != 0) {
                        
                        // Es un idioma valid
                        
                        // Comprovo si la $idseccion es diferent a 0, per que si es diferent a 0 vol dir que li passem un id
                        if ($idseccion != 0) {
                            
                            // Estem passant un $idseccion, pero ara tenim que comprovar que sigui correcte
                            
                            $resultadosTradus = $this->getSeccionsTradus($idseccion, $ididioma);
                            $resultadosMetas = $this->getSeccionsMetas($idseccion, $ididioma);

                            if (is_object($resultadosTradus)) {
                                
                                // $idseccion es bona
                                
                                // Tambe es tindria que comprovar si te Contingut
                                $em = $this->getDoctrine()->getEntityManager();
                                $Articles = $em->getRepository('ContentBundle:Article')->findOneByIdseccion($idseccion);

                                if (!is_object($Articles)) {
                                    
                                    // No te Articles puc borrar
                             
                                    // Aqui mirare si te una relacio

                                    $em = $this->getDoctrine()->getEntityManager();
                                    $relacio = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdsecfill($idseccion);

                                    if (!is_object($relacio)) {

                                        // No te relacio puc borrar
                                        
                                        // Aqui comprovare que no sigui una seccio principal
                                        $em = $this->getDoctrine()->getEntityManager();
                                        $SeccionPrincipal = $em->getRepository('ContentBundle:Seccion')->find($idseccion);
                                
                                        if ($SeccionPrincipal->getPrincipal() != 1) {                                        

                                            // Borro Taula Seccion
                                            $em = $this->getDoctrine()->getEntityManager();
                                            $SeccionBorrar = $em->getRepository('ContentBundle:Seccion')->find($idseccion);
                                            $em->remove($SeccionBorrar);
                                            $em->flush();

                                            // Borro Taula SeccionRelation
                                            $em = $this->getDoctrine()->getEntityManager();
                                            $SeccionRelationBorrar = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdseccion($idseccion);
                                            $em->remove($SeccionRelationBorrar);
                                            $em->flush();

                                            // Borro Taula SeccionMetas
                                            $em = $this->getDoctrine()->getEntityManager();
                                            $SeccionMetasBorrar = $em->getRepository('ContentBundle:SeccionMeta')->findByIdseccion($idseccion);

                                            foreach ($SeccionMetasBorrar as $SeccionMetaBorrar) {

                                                $em->remove($SeccionMetaBorrar);
                                                $em->flush();

                                            }

                                            // Borro Taula SeccionTradus
                                            $em = $this->getDoctrine()->getEntityManager();
                                            $SeccionTradusBorrar = $em->getRepository('ContentBundle:SeccionTradus')->findByIdseccion($idseccion);

                                            foreach ($SeccionTradusBorrar as $SeccionTraduBorrar) {
                                                $em->remove($SeccionTraduBorrar);
                                                $em->flush();
                                            }

                                            $this->get('session')->setFlash("success", "Seccion borrada correctamente.");
                                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                            
                                        } else {

                                            $this->get('session')->setFlash("error", "Seccion principal no se puede borrar.");
                                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                                        }                                            

                                    } else {

                                        // Te relacio i no puc borrar
                                        $this->get('session')->setFlash("error", "No puede borrar por que tiene una Seccion relacionada.");
                                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));

                                    }
                                
                                } else {
                                    
                                    // Te articles i no puc borrar
                                    $this->get('session')->setFlash("error", "No puede borrar por que tiene Articulos relacionados.");
                                    return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));
                                       
                                }
                                
                            } else {
                                
                                // $idseccion es dolenta

                                $this->get('session')->setFlash("error", "Esta intentando borrar un Seccion que no existe.");
                                return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));                                
                                
                            }
                            
                        } else {
                            
                            // No li estem passant cap $idseccion

                            $this->get('session')->setFlash("error", "No ha escogido ninguna Seccion.");
                            return $this->redirect($this->generateUrl('ContentBundle_secciones_list_idioma', array('ididioma' => $ididioma)));                            
                            
                        }
                        
                    } else {
                        
                        // No es un idioma valid
                        $this->get('session')->setFlash("error", "El idioma que recibo, no es el correcto.");
                        return $this->redirect($this->generateUrl('ContentBundle_secciones_list'));
                        
                    }
                    
                    
                }
                
            break;
            case 2:

                // Cadena
                
                echo "Encara ho tinc que fer";
                die();

            break;
            default:

                // No hi ha configuracio inicial                
                return $this->redirect($this->generateUrl('ConfigBundle_homepage'));

            break;
        }
        
    }

    public function montaArbre($idhotel, $ididioma, $fletxa) {
                
        $em = $this->getDoctrine()->getEntityManager();
        $relacions = $em->getRepository('ContentBundle:SeccionRelation')->findSeccionsByIdhotel($idhotel);
        
        // Aqui comprovo si hi ha alguna relacio
        if (isset($relacions)) {
        
            // Hi ha relacions
        
            $PrincipalArray = array();
            $RelacioArray = array();
            $OrderArray = array();

            foreach($relacions as $i => $relacio) {

                $PrincipalArray[$relacio->getIdseccion()] = $relacio->getIdseccion();
                $RelacioArray[$relacio->getIdsecfill()][$relacio->getIdseccion()] = $relacio->getIdseccion();
                $OrderArray[$relacio->getIdsecfill()][$relacio->getIdseccion()] = $relacio->getPosition();

            }

            $ProfMaxi = count($RelacioArray);

            $ResultatArray = array();
            $ControlPosicio = array();
            $PosicioArray = array();

            $SenseRelacioArray = array();
            $Relacionats = array();

            foreach($PrincipalArray as $Principal) {

                if (array_key_exists($Principal, $RelacioArray)) {

                    $Relacionats[$Principal] = $Principal;

                } else {

                    $SenseRelacioArray[$Principal] = $Principal;

                }

            }
            
            if (isset($RelacioArray[0])) {

                // esta definit

                $PosPrincipal = $RelacioArray[0];
                
                foreach($PosPrincipal as $Principal) {
                    
                    // Defineixo l'array temporal
                    $TempArray = array();
                    
                    if (array_key_exists($Principal, $RelacioArray)) {
                        
                        // Miro si te relacio, i si en te el guardo en l'array temporal
                        if (array_key_exists($Principal, $Relacionats)) {

                            $PosTempArray = $ProfMaxi;

                            $TempArray[$PosTempArray][0] = $Principal;
                            $TempArray[$PosTempArray][1] = 1;

                            $ControlSub = 1;

                        }
                        
                        // Començo a recorre
                        foreach($RelacioArray[$Principal] as $Fill) {
                            
                            $ResultatArray[$Principal][$Fill] = $Fill;
                            $PosicioArray[$Principal][$Fill] = 1;

                            $valor = $Fill;
                            
                            $ControlPosicio[$Fill] = $Fill;
                            
                            // Miro si te relacio, i si en te el guardo en l'array temporal
                            if (array_key_exists($Fill, $Relacionats)) {

                                $PosTempArray = $ProfMaxi - 1;
                                
                                $TempArray[$PosTempArray][0] = $Fill;
                                $TempArray[$PosTempArray][1] = 2;

                                $ControlSub = 1;

                            }
            
                            // Aqui recorro la primera volta
                            for($b=2;$b<$ProfMaxi;$b++) {

                                if (!array_key_exists($valor, $SenseRelacioArray)) { 

                                    $c = 1;

                                    $totalRelacioArray = count($RelacioArray[$valor]);
                           
                                    foreach ($RelacioArray[$valor] as $aveure) {

                                        // Aqui tinc que controlar si l'array segueix
                                        if (!array_key_exists($aveure, $ControlPosicio)) {
                                                                                        
                                            $ResultatArray[$Principal][$aveure] = $aveure;
                                            $PosicioArray[$Principal][$aveure] = $b;

                                        }
                                        
                                        $ControlPosicio[$aveure] = $aveure;
                                        
                                        if (array_key_exists($aveure, $Relacionats)) {
                                           
                                            $PosTempArray = $ProfMaxi - $b;
                                            
                                            $TempArray[$PosTempArray][0] = $aveure;
                                            $TempArray[$PosTempArray][1] = $b + 1;
                                            
                                            $valor = $aveure;
                                            $ControlSub = 1;
                                            
                                            break;
                                            
                                        }

                                        $c++;
                                        
                                    }

                                }
                                
                            }

                            // Fi recorro la primera volta
                            
                            // Aqui començo les altres voltes
                            
                            if (isset($ControlSub)) {
                                
                                if ($ControlSub == 1) {
                                    
                                    for ($z=0;$z<(count($TempArray)*3);$z++) {
                                        
                                        // Aqui ordeno l'array
                                        ksort($TempArray);

                                        foreach($TempArray as $Temp) {
                                            
                                            $valor = $Temp[0];
                                            
                                            $PosicionMenu = $Temp[1];
                                           
                                            for($b=$PosicionMenu;$b<$ProfMaxi;$b++) {

                                                if (!array_key_exists($valor, $SenseRelacioArray)) { 

                                                    foreach ($RelacioArray[$valor] as $aveure) {

                                                        if (!array_key_exists($aveure, $ResultatArray)) {

                                                            // Aqui tinc que controlar si l'array segueix
                                                            if (!array_key_exists($aveure, $ControlPosicio)) {

                                                                $ResultatArray[$Principal][$aveure] = $aveure;
                                                                $PosicioArray[$Principal][$aveure] = $b;
                                                                
                                                                if (isset($RelacioArray[$aveure])) {
                                                                    $totalRelacioArray = count($RelacioArray[$aveure]);
                                                                } else {
                                                                    $totalRelacioArray = 0; 
                                                                }

                                                                $ControlPosicio[$aveure] = $aveure;

                                                                if ($totalRelacioArray > 0) {

                                                                    $PosTempArray = $ProfMaxi - ($b + 1);

                                                                    $TempArray[$PosTempArray][0] = $aveure;
                                                                    $TempArray[$PosTempArray][1] = $b + 1;
                                                                  
                                                                    $noborrar = 1;

                                                                    break 3;

                                                                } else {
                                                                   
                                                                    $noborrar = 1;
                                                                    
                                                                }

                                                            }

                                                        }

                                                    }

                                                }

                                            }

                                        }
                                        
                                    }
                                    
                                }

                            }
                            
                            // Borro els temporals despres de cada categoria pare
                            if ($noborrar != 1) {
                                        
                                unset($TempArray);
                                unset($ControlSub);
                                        
                            }

                        }   

                    }

                }
                
                //Aqui montare el array bo

                $CategoriesFinalArray = array();

                $k = 0;

                foreach ($RelacioArray[0] as $CatePrincipals) {

                    $TradusSeccio = $this->getSeccionsTradus($CatePrincipals, $ididioma);

                    if (is_int($TradusSeccio)) {

                        $DefaultIdioma = 1;
                        $TradusSeccio = $this->getSeccionsTradus($CatePrincipals, $DefaultIdioma);
                        $noTeTraduccio = 1;

                    } else {

                        $noTeTraduccio = 0;

                    }
                    
                    $Anterior = 0;
                    
                    $em = $this->getDoctrine()->getEntityManager();
                    $esPare = $em->getRepository('ContentBundle:SeccionRelation')->findSeccionsMaxPosition($CatePrincipals, $idhotel);
                    
                    if (count($esPare) != 0) {
                        // Es papa
                        $esPapa = 1;
                    } else {
                        // No es papa
                        $esPapa = 0;
                    }
                        
                    $em = $this->getDoctrine()->getEntityManager();
                    $SeccionPrincipal = $em->getRepository('ContentBundle:Seccion')->findOneBy(array('id' => $CatePrincipals, 'idhotel'=> $idhotel));
                        
                    $Principal = $SeccionPrincipal->getPrincipal();
                    
                    if ($fletxa == 0 && $Principal == 1) {
                        $noMostraCategoria = $CatePrincipals;
                    } else {
                        $noMostraCategoria = "";
                    }
                    
                    if ($CatePrincipals != $noMostraCategoria) {
                        $CategoriesFinalArray[$k]['id'] = $CatePrincipals;
                        $CategoriesFinalArray[$k]['pos'] = 0;
                        $CategoriesFinalArray[$k]['anterior'] = $Anterior;
                        $CategoriesFinalArray[$k]['idtradu'] = $TradusSeccio->getId();
                        $CategoriesFinalArray[$k]['text'] = $TradusSeccio->getNomseccion();
                        $CategoriesFinalArray[$k]['published'] = $TradusSeccio->getPublished();
                        $CategoriesFinalArray[$k]['visible'] = $TradusSeccio->getVisible();
                        $CategoriesFinalArray[$k]['notraduccio'] = $noTeTraduccio;
                        $CategoriesFinalArray[$k]['principal'] = $Principal;
                        $CategoriesFinalArray[$k]['pare'] = $esPapa;
                    }

                    if (array_key_exists($CatePrincipals, $ResultatArray)) {

                        foreach($ResultatArray[$CatePrincipals] as $Resultat) {

                            $k++;

                            $TradusSeccio = $this->getSeccionsTradus($Resultat, $ididioma);

                            if (is_int($TradusSeccio)) {

                                $DefaultIdioma = 1;
                                $TradusSeccio = $this->getSeccionsTradus($Resultat, $DefaultIdioma);
                                $noTeTraduccio = 1;

                            } else {

                                $noTeTraduccio = 0;

                            }

                            $em = $this->getDoctrine()->getEntityManager();
                            $AnteriorObjecte = $em->getRepository('ContentBundle:SeccionRelation')->findOneByIdseccion($Resultat);

                            $Anterior = $AnteriorObjecte->getIdsecfill();

                            $Posicio = $PosicioArray[$CatePrincipals][$Resultat];

                            $String = "";

                            if ($fletxa != 1) {
                            
                                for ($i=0;$i<$Posicio;$i++){

                                    $String = "-- ". $String;

                                }
                            
                            }
                            
                            $em = $this->getDoctrine()->getEntityManager();
                            $esPare = $em->getRepository('ContentBundle:SeccionRelation')->findSeccionsMaxPosition($Resultat, $idhotel);

                            if (count($esPare) != 0) {
                                // Es papa
                                $esPapa = 1;
                            } else {
                                // No es papa
                                $esPapa = 0;
                            }
                            
                            $em = $this->getDoctrine()->getEntityManager();
                            $SeccionPrincipal = $em->getRepository('ContentBundle:Seccion')->findOneBy(array('id' => $Resultat, 'idhotel'=> $idhotel));
                            
                            $Principal = $SeccionPrincipal->getPrincipal();
                            
                            $CategoriesFinalArray[$k]['id'] = $Resultat;
                            $CategoriesFinalArray[$k]['pos'] = $Posicio;
                            $CategoriesFinalArray[$k]['anterior'] = $Anterior;
                            $CategoriesFinalArray[$k]['idtradu'] = $TradusSeccio->getId();
                            $CategoriesFinalArray[$k]['text'] = $String.$TradusSeccio->getNomseccion();
                            $CategoriesFinalArray[$k]['published'] = $TradusSeccio->getPublished();
                            $CategoriesFinalArray[$k]['visible'] = $TradusSeccio->getVisible();
                            $CategoriesFinalArray[$k]['notraduccio'] = $noTeTraduccio;
                            $CategoriesFinalArray[$k]['principal'] = $Principal;
                            $CategoriesFinalArray[$k]['pare'] = $esPapa;

                        }

                    }

                    $k++;

                }
                
                return $CategoriesFinalArray;

            } else {

                // No esta definit
                return 0;

            }
        
        } else {
            
            // No hi ha relacions
            return 0;
            
        }        
   
    }
   
    private function getSeccionsTradus($idseccion, $ididioma) {
        
        $em = $this->getDoctrine()->getEntityManager();
        $TraduSeccions = $em->getRepository('ContentBundle:SeccionTradus')->findSeccionsIdSeccion($idseccion, $ididioma);
        
        
        if (count($TraduSeccions) != 0) {
           
            foreach($TraduSeccions as $TraduSeccion) {
            
                $resultat = $TraduSeccion;
            
            } 
            
            return $resultat;
        
        } else {
            
            return 0;
            
        }
        
    }
    
    private function getSeccionsTradusCorretgit($idseccion, $ididioma) {
        
        $em = $this->getDoctrine()->getEntityManager();
        $TraduSeccions = $em->getRepository('ContentBundle:SeccionTradus')->findSeccionsIdLinia($idseccion, $ididioma);
        
        
        if (count($TraduSeccions) != 0) {
           
            foreach($TraduSeccions as $TraduSeccion) {
            
                $resultat = $TraduSeccion;
            
            } 
            
            return $resultat;
        
        } else {
            
            return 0;
            
        }
        
    }
    
    private function getSeccionsMetas($idseccion, $ididioma) {
        
        $em = $this->getDoctrine()->getEntityManager();
        $MetasSeccions = $em->getRepository('ContentBundle:SeccionMeta')->findSeccionsIdHotel($idseccion, $ididioma);
        
        
        if (count($MetasSeccions) != 0) {
           
            foreach($MetasSeccions as $MetaSeccion) {
            
                $resultat = $MetaSeccion;
            
            } 
            
            return $resultat;
        
        } else {
            
            return 0;
            
        }
        
    }
    
}
